package com.itheima.dao;

import com.itheima.pojo.CheckGroup;
import com.itheima.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);

    User findByUserName(@Param("username") String username);


    //添加用户信息
    void add(User user);

    //循环插入用户和角色的中间表
    void setUserAndRole(@Param("roleId") Integer roleId, @Param("userId") Integer userId);

    //分页查询用户数据
    List<User> findPage(@Param("queryString") String queryString);

    //根据用户id查询用户数据
    User findById(@Param("id") Integer id);

    //根据用户id,查询中间表，看用户勾选的角色
    List<Integer> findUserIdAndRoleId(@Param("id") Integer id);

    //更新用户信息
    void edit(User user);

    //删除中间表的老关系
    void deleteAssociation(@Param("id") Integer id);


    /**
     * map & pojo 不需要加@Param,也可以加
     * 多参数建议加@Param ,不加就需要按照param1 param2 ...paramN
     * List & Array 可以不加@Param  如果不加@Param取值需要写list&array
     * 如果有多个List参数那么取值  param1 param2 ...paramN
     */

    //更新中间表信息
    void setUserAndRoleBatch(@Param("roleIds") List<Integer> roleIds, @Param("userId") Integer userId);

    //根据用户id查询中间表的个数
    Integer findCountUserId(@Param("id") Integer id);

    //删除用户和角色中间表的信息
    void deleteRoleByUserId(Integer id);

    //删除用户信息
    void delete(Integer id);
}
